﻿namespace Hsenl {
    public enum CompositeCombinationMode {
        // 一般
        // 这种模式下, 做复合组合, 比较克制, 只在当前父级发生变化时, 才会向父级尝试做组合匹配.
        // 我们实际使用是, 多数都是这种情况, 比如把一个技能放到人物的技能栏里, 技能能自动和人物做组合匹配.
        Normal,
        
        // 极致
        // 这种模式下, 会确保只要父子条件满足组合条件, 就一定会匹配成功, 无论什么情况, 当然, 这种模式也会比较耗费性能, 
        // 但多数情况下, 不需要如此的极端
        // 
        // 极致模式下, 会处理的匹配
        // - 要形成组合时, 判断能覆盖自己的组合是否存在
        // - 组合形成时, 会尝试覆盖已存在的复合和单组合,
        // - 组合断开时, 会把所有可能被自己断开的组合, 在所有相关的实体上, 重新进行一遍
        // 
        // - 实体添加组件时, 会向上做匹配
        // - 实体添加组件时, 会遍历自己的子级, 让他们尝试向上做匹配
        // 
        // - 实体改变父级时, 会断开之前的所有父级的组合, 然后再重新向上做匹配
        // - 实体改变父级时, 会遍历自己的子级, 让他们断开之前所有从该父级往上的组合, 然后让他们尝试重新向上做匹配
        // - 
        // - 实体销毁时, 会断开所有的组合
        // - 实体的组件被销毁时, 会断开所有和该组件相关的组合
        Extreme
    }
}